countWhile

@JvmName(name = "countWhileFull")
inline fun CharSequence.countWhile(predicate: (Char) -> Boolean): Int(source)

Counts continuous characters in this string that match the given predicate.

Samples

import dev.kikugie.commons.text.countMatching
import dev.kikugie.commons.text.countWhile
import dev.kikugie.commons.text.getOrDefault
import dev.kikugie.commons.text.isEnglishLetter
import dev.kikugie.commons.text.isEnglishLetterOrDigit
import dev.kikugie.commons.text.reverseView
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue

fun main() { 
   //sampleStart 
   assertEquals(0, "\n hello!".countWhile(Char::isLetter))
assertEquals(2, "\n hello!".countWhile(Char::isWhitespace))
assertEquals(5, "\n hello!".countWhile(start = 2, end = 7, Char::isLetter)) 
   //sampleEnd
}

inline fun CharSequence.countWhile(range: IntRange, predicate: (Char) -> Boolean): Int(source)

Counts continuous characters in this string that match the given predicate. The count goes withing the given range, which is coerced to the string boundaries.

Samples

import dev.kikugie.commons.text.countMatching
import dev.kikugie.commons.text.countWhile
import dev.kikugie.commons.text.getOrDefault
import dev.kikugie.commons.text.isEnglishLetter
import dev.kikugie.commons.text.isEnglishLetterOrDigit
import dev.kikugie.commons.text.reverseView
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue

fun main() { 
   //sampleStart 
   assertEquals(0, "\n hello!".countWhile(Char::isLetter))
assertEquals(2, "\n hello!".countWhile(Char::isWhitespace))
assertEquals(5, "\n hello!".countWhile(start = 2, end = 7, Char::isLetter)) 
   //sampleEnd
}

inline fun CharSequence.countWhile(start: Int = 0, end: Int = length, predicate: (Char) -> Boolean): Int(source)

Counts continuous characters in this string that match the given predicate. The count goes from start to end (exclusive), which cover the full string by default and coerce to its boundaries.

Samples

import dev.kikugie.commons.text.countMatching
import dev.kikugie.commons.text.countWhile
import dev.kikugie.commons.text.getOrDefault
import dev.kikugie.commons.text.isEnglishLetter
import dev.kikugie.commons.text.isEnglishLetterOrDigit
import dev.kikugie.commons.text.reverseView
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue

fun main() { 
   //sampleStart 
   assertEquals(0, "\n hello!".countWhile(Char::isLetter))
assertEquals(2, "\n hello!".countWhile(Char::isWhitespace))
assertEquals(5, "\n hello!".countWhile(start = 2, end = 7, Char::isLetter)) 
   //sampleEnd
}